package com.higgins.eventtracking.client.projectmanagement;

import java.util.Date;
import java.util.List;

import com.google.gwt.user.client.rpc.AsyncCallback;

public interface ProjectServiceAsync {
	void retrieveProjectItems(Long parentId, AsyncCallback<List<ProjectItemDTO>> callback) throws IllegalArgumentException;
	void retrieveParentIds(Long parentId, AsyncCallback<List<Long>> callback) throws IllegalArgumentException;
	void insetProjectItem(ProjectItemDTO item, AsyncCallback<Long> callback) throws IllegalArgumentException;
	void updateProjectItemTask(Long id, String task, Long parentId, AsyncCallback<Long> callback) throws IllegalArgumentException;
	void updateProjectItemForecast(Long id, Double forecast, Long parentId, AsyncCallback<Long> callback) throws IllegalArgumentException;
	void updateProjectItemPriority(Long idOne, Integer priorityOne, Long idTwo, Integer priorityTwo, Long parentId, AsyncCallback<List<Long>> callback) throws IllegalArgumentException;
	void updateProjectItemComplete(Long id, Double complete, Long parentId, AsyncCallback<Long> callback) throws IllegalArgumentException;
	void deleteProjectItem(Long id, AsyncCallback<Boolean> callback) throws IllegalArgumentException;
	void startTimer(Long id, AsyncCallback<Boolean> callback) throws IllegalArgumentException;
	void stopTimer(Long id, AsyncCallback<Boolean> callback) throws IllegalArgumentException;
	void isActive(Long id, AsyncCallback<Long> callback) throws IllegalArgumentException;
	void retrieveHistory(String date, Boolean showAllEvents, Boolean showDistinctList, AsyncCallback<List<HistoryItemDTO>> callback) throws IllegalArgumentException; 
	void retrieveImmediate(AsyncCallback<List<String>> callback) throws IllegalArgumentException;
	void retrieveFollowUp(AsyncCallback<List<String>> callback) throws IllegalArgumentException;
	void retrieveTodaysSimpleFormatDate(AsyncCallback<String> callback) throws IllegalArgumentException;
	void setPermanent(Long id, AsyncCallback<Boolean> callback) throws IllegalArgumentException;
	void setNotPermanent(Long id, AsyncCallback<Boolean> callback) throws IllegalArgumentException;
	void setImmediate(Long id, AsyncCallback<Boolean> callback) throws IllegalArgumentException;
	void setNotImmediate(Long id, AsyncCallback<Boolean> callback) throws IllegalArgumentException;
	void setFollowUp(Long id, AsyncCallback<Boolean> callback) throws IllegalArgumentException;
	void setNotFollowUp(Long id, AsyncCallback<Boolean> callback) throws IllegalArgumentException;
	void updateFollowUpDate(Long id, String followUpDate, AsyncCallback<Long> callback)	throws IllegalArgumentException;
	void updateStartTimestamp(Long id, Date startTimestamp, AsyncCallback<Long> callback)	throws IllegalArgumentException;
	void updateEndTimestamp(Long id, Date endTimestamp, AsyncCallback<Long> callback)	throws IllegalArgumentException;
	void checkAccess(AsyncCallback<Boolean> callback) throws IllegalArgumentException;
}
